package com.yyfax.account.dao;

import com.yyfax.account.common.plugin.PageAdapter;
import com.yyfax.account.domain.DayChangeReconDetail;
import com.yyfax.account.vo.DayChangeCustomerFundsVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DayChangeReconDetailDao {

	/**
	 * @mbggenerated
	 */
	int insert(DayChangeReconDetail record);

	/**
	 * @mbggenerated
	 */
	DayChangeReconDetail selectByPrimaryKey(Integer id);

	/**
	 * @mbggenerated
	 */
	int updateByPrimaryKeySelective(DayChangeReconDetail record);

	/**
	 * @mbggenerated
	 */
	int updateByPrimaryKey(DayChangeReconDetail record);

	/**
	 * 存入友金所对账日切
	 *
	 * @author yangrd
	 * @date 2017-09-26 19:31
	 * @since v1.0.0
	 * @param changeDay 友金所日切日期
	 * @param fuChangeDay 富友日切日期
	 * @return
	 */
	void insertDayChange(@Param("changeDay") String changeDay, @Param("fuChangeDay") String fuChangeDay);

	/**
	 * 查询日切对账明细列表(全部或差异列表)
	 *
	 * @author liangqm
	 * @date 2017-10-20 9:51:18
	 * @since v1.0.0
	 * @param fuAccountNo 富友账户编号 ，不传查询全部
	 * @param changeDay 日切日期
	 * @param dataType 查询数据类型 1平台 2个人
	 * @param _pageNo 页码
	 * @param _pageSize 行数
	 * @param status 1 查询全部数据 2查询异常数据
	 * @return
	 */
	PageAdapter<DayChangeReconDetail> queryDayChangeReconDetailsByPage(@Param("fuAccountNo") String fuAccountNo, @Param("changeDay") String changeDay,
																	   @Param("dataType") String dataType, @Param(PageAdapter.PAGE) int _pageNo, @Param(PageAdapter.SIZE) int _pageSize,
																	   @Param("status") String status);

	/**
	 * 查询平台账户日切历史记录
	 *
	 * @author liangqm
	 * @date 2017-10-20 9:56:18
	 * @since v1.0.0
	 * @param accountNo 账户编号
	 * @param startDate 开始日期
	 * @param endDate 结束日期
	 * @param _pageNo 页码
	 * @param _pageSize 行数
	 * @return
	 */
	PageAdapter<DayChangeReconDetail> queryAccountRecords(@Param("accountNo") String accountNo, @Param("startDate") String startDate,
														  @Param("endDate") String endDate, @Param(PageAdapter.PAGE) int _pageNo, @Param(PageAdapter.SIZE) int _pageSize);

	/**
	 * 分页查询用户金额汇总
	 *
	 * @author liangqm
	 * @date 2017-10-25 18:52:18
	 * @param startChangeDay
	 * @param endChangeDay
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @since v1.0.0
	 */
	PageAdapter<DayChangeCustomerFundsVo> queryCustomerFundsByPage(@Param("startChangeDay") String startChangeDay,
																   @Param("endChangeDay") String endChangeDay, @Param(PageAdapter.PAGE) Integer _pageNo, @Param(PageAdapter.SIZE) Integer _pageSize);

	/**
	 * 清除对账明细
	 *
	 * @author liangqm
	 * @date 2017-10-25 18:52:18
	 * @param changeDay
	 * @return
	 * @since v1.0.0
	 */
	void delReconDetail(@Param("changeDay") String changeDay);

	/**
	 * 清除对账汇总记录
	 *
	 * @author liangqm
	 * @date 2017-10-25 18:52:18
	 * @param changeDay
	 * @return
	 * @since v1.0.0
	 */
	void delRecon(@Param("changeDay") String changeDay);

	/**
	 * 批量查询友金所对账记录
	 *
	 * @author liangqm
	 * @date 2017-10-25 18:52:18
	 * @param preChangeDay
	 * @param changeDay
	 * @param queryId
	 * @param limitSize
	 * @return
	 * @since v1.0.0
	 */
	List<DayChangeReconDetail> batchQueryDayChangeRecon(@Param("preChangeDay") String preChangeDay, @Param("changeDay") String changeDay,
														@Param("queryId") Integer queryId, @Param("limitSize") Integer limitSize);

	/**
	 * 批量查询富友对账记录
	 *
	 * @author liangqm
	 * @date 2017-10-25 18:52:18
	 * @param preChangeDay
	 * @param changeDay
	 * @param queryId
	 * @param limitSize
	 * @return
	 * @since v1.0.0
	 */
	List<DayChangeReconDetail> batchQueryFuiouRecon(@Param("preChangeDay") String preChangeDay, @Param("changeDay") String changeDay,
													@Param("queryId") Integer queryId, @Param("limitSize") Integer limitSize);

	/**
	 * 批量插入对账记录
	 *
	 * @author liangqm
	 * @date 2017-10-25 18:52:18
	 * @param reconDetails
	 * @return
	 * @since v1.0.0
	 */
	int batchInsertDayChangeReconDetails(@Param("reconDetails") List<DayChangeReconDetail> reconDetails);
}